#pragma once

#include <vex/core/config.h>

#ifndef VEX_STRICT_ABI
#define VEX_NO_STRICT_ABI
#endif

#ifdef _WIN32
#define VEX_ABSTRACT __declspec(novtable) 
#else
#define VEX_ABSTRACT
#endif

#ifdef VEX_NO_STRICT_ABI
#define VEX_PROTECT_CONTRACT(VexContractName) \
protected: VEX_DEFAULTED_DESTRUCTOR(VexContractName)
#else
#define VEX_PROTECT_CONTRACT(VexContractName)
#endif